#include <math.h>
#include <stdio.h>
#include <stdlib.h>

// calcula o xor entre dois números binários a e b e coloca o resultado em c
void xor(int a[7], int b[7], int c[7])
{
	int i;

	for(i=0; i<7; ++i)
	{
		if(a[i] == 0 && b[i] == 0)
			c[i] = 0;
		else if(a[i] == 1 && b[i] == 1)
			c[i] = 0;
		else if(a[i] == 1 && b[i] == 0)
			c[i] = 1;
		else if(a[i] == 0 && b[i] == 1)
			c[i] = 1;
	}
}

// converte um numero decimal (nro) em binario (bits)
void binario(int nro, int bits[7])
{
	int resultado, resto, pos=6, continua=1;

	while(continua)
	{
		resultado = nro/2;
	
		resto = nro%2;
		
		if(resto == 0)
			bits[pos--] = 0;
		else
			bits[pos--] = 1;
		
		nro = resultado;

		if(nro == 0)
			continua = 0;
	}

	while(pos > -1)
		bits[pos--] = 0;
}

// recebe um número binário (bits) e retorna seu decimal correspondente
int decimal(int bits[7])
{
	int i, pot, parcela, nro;
	
	nro = 0;

	for(i=0; i<7; ++i)
	{
		pot = 6-i;
		parcela = pow(2, pot) * bits[i];
		nro += parcela; 
	}

	return nro;
}			

// calcula o tamanho do texto
int get_text_size(char *nome)
{
    int fileSize;
    FILE *arq;

    if(!(arq = fopen(nome, "r")))
    {
        printf("Erro ao abrir o arquivo.\n");
        exit(-1);
    }
    else if(fseek(arq, 0, SEEK_END) || !(fileSize = ftell(arq)))
    {
	printf("Erro ao ler o arquivo.\n");
	exit(-1);
    }

    fclose(arq);
        
    return fileSize;
}

